In order to operate properly, this script is expecting to find the audio files named and organised a certain way. Here is how :

[audio folder] (as declared in the beginning of the script)
--------------[song folder] : it's name will set the song's name, this folder must contain all audio files used by this song
---------------------------[anything]_[track name].wav : every audio file must contain an underscore and end with ".wav" (case sensitive)
                                                         the substring before the underscore will not be read and can be anything you like
                                                         the following substring will be displayed as the name of this track. Keep it short.
                                                         It will also be used to sort the tracks alphabetically on the UI
---------------------------[anything]_[some other track name].wav : you get the idea

There can be as many tracks as you like, different songs may have different tracks count. The display should adapt (within the limits of Tkinter).
The sample tracks will be played from the start everytime they are triggered by their green play button on the UI or by a sensor sending volume data above a certain threeshold (defined in this script). Which track number will be used as a sample track is also defined in the script (l62) and there can be as much sample tracks as you define. To avoid writing a specific configuration per song, the sample tracks are expected to be the same (in count and alphabetical order) accross all songs.
The python wrapper also allow to reroute filtered OSC messages to puredata, but this was an added bonus and it may be simpler to just skip the wrapper and receive the OSC directly from the WemosD1 inside pd, using it's own GUI.
